<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <title>01_理解闭包</title>
  </head>

  <body>
    <!--
1. 如何产生闭包?
  * 当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包
2. 闭包到底是什么?
  * 使用chrome调试查看
  * 理解一: 闭包是嵌套的内部函数(绝大部分人)
  * 理解二: 包含被引用变量(函数)的对象(极少数人)
  * 注意: 闭包存在于嵌套的内部函数中
3. 产生闭包的条件?
  * 函数嵌套
  * 内部函数引用了外部函数的数据(变量/函数)
-->
    <script type="text/javascript">
      function fn1() {
        var a = 2
        var b = 'abc'

        function fn2() { //执行函数定义就会产生闭包(不用调用内部函数)
          console.log(a)
        }
        // fn2()
      }
      fn1()

      function fun1() {
        var a = 3
        var fun2 = function () {
          console.log(a)
        }
      }
      fun1()
    </script>
  </body>

</html>